package com.gmcc.aiquality.common.online.dto;

import com.gmcc.aiquality.common.core.validator.UpdateGroup;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;

/**
 * 在线表单API的DTO对象。
 *
 * @author 孙先生
 * @date 2025-10-23
 */
@Schema(description = "在线表单API的DTO对象")
@Data
public class OnlineApiDto {

    /**
     * 主键Id。
     */
    @Schema(description = "主键Id", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "数据验证失败，主键Id不能为空！", groups = {UpdateGroup.class})
    private Long id;

    /**
     * API编码。
     */
    @Schema(description = "API编码", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "数据验证失败，API编码不能为空！")
    private String apiCode;

    /**
     * API名称。
     * NOTE: 可支持等于操作符的列表数据过滤。
     */
    @Schema(description = "API名称。可支持等于操作符的列表数据过滤", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "数据验证失败，API名称不能为空！")
    private String apiName;

    /**
     * 分组Id。
     * NOTE: 可支持等于操作符的列表数据过滤。
     */
    @Schema(description = "分组Id。可支持等于操作符的列表数据过滤", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "数据验证失败，分组Id不能为空！")
    private Long groupId;

    /**
     * API脚本。
     */
    @Schema(description = "API脚本")
    private String apiScript;

    /**
     * API描述。
     */
    @Schema(description = "API描述")
    private String apiDesc;

    /**
     * 扩展数据。
     */
    @Schema(description = "扩展数据")
    private String extraData;
}
